Skip to main content

Simple fast animation

Falling balls

Download original notebook
balls = RandomReal[{-1,1}, {300,3}];
vels  = RandomReal[{-1,1}, {300,3}];

Graphics3D[{
  Table[With[{i = i},
    {
      RGBColor[RandomReal[{0,1}, 3]],
      Sphere[balls[[i]] // Offload, 0.03]
    }
  ], {i, Length[balls]}], 
  AnimationFrameListener[balls // Offload, "Event"->"frame"]
}]
(*VB[*)(FrontEndRef["42990252-18e0-4f4d-a0c1-e4189abcfd10"])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKmxhZWhoYmRrpGlqkGuiapJmk6CYaJBvqppoYWlgmJiWnpRgaAABz+xVl"*)(*]VB*)

Update function

EventHandler["frame", Function[Null,

  vels = Table[
    If[Norm[balls[[i]]] < 0.01, -1, 1] vels[[i]] - 0.08 balls[[i]]
  , {i, Length[balls]}];
  
  balls = Table[balls[[i]] + 0.08 vels[[i]], {i, Length[balls]}];
]];

To start animation

EventFire["frame", Null]

To stop

EventRemove["frame"]